home *** CD-ROM | disk | FTP | other *** search
/ Aminet 44 / Aminet 44 (2001)(GTI - Schatztruhe)[!][Aug 2001].iso / Aminet / util / rexx / rmh.lha / RMH / Examples / father.rexx < prev    next >
OS/2 REXX Batch file  |  2001-05-24  |  1KB  |  75 lines

  1. /*
  2. ** MacroNotify
  3. ** Father Macro:
  4. ** Runs 10 children macros, waits 10 seconds and exists
  5. **
  6. **/
  7.  
  8. signal on halt
  9. signal on break_c
  10.  
  11. l="rmh.library";if ~show("L",l) then;if ~addlib(l,0,-30) then exit
  12.  
  13. call MacroEnv("env")
  14.  
  15. name=pragma("ID")
  16. mns=MacroNotifyCreate(name)
  17. if mns=0 then do
  18.     call info "Can't create MacroNotify"
  19.     exit
  20. end
  21.  
  22. tim=CreateTimer()
  23. ts=TimerSignal(tim)
  24. ctrL_c=2**12
  25. mask=or(mns,ts,ctrl_c)
  26.  
  27. call StartTimer(tim,10)
  28.  
  29. m=0
  30. do forever
  31.  
  32.     if m<9 then do
  33.         call RxsCall("child" name m)
  34.         m=m+1
  35.     end
  36.  
  37.     recv=Wait(mask)
  38.  
  39.     if and(recv,ctrl_c)>0 then do
  40.         call info "interrupted"
  41.         exit
  42.     end
  43.  
  44.     if and(recv,ts)>0 then do
  45.         call info "timeout"
  46.         exit
  47.     end
  48.  
  49.     if and(recv,mns)>0 then call HandleMacroNotify
  50. end
  51. /* never reached */
  52.  
  53. HandleMacroNotify:
  54.     do forever
  55.         ev=MacroNotifyGetEvent(name)
  56.         if ev="" then return
  57.         parse var ev ev id more
  58.         select
  59.             when ev="STARTED" then call info "Macro" id "started"
  60.             when ev="ENDED" then call info "Macro" id "exited"
  61.             otherwise nop
  62.         end
  63.     end
  64.     /* never reached */
  65.  
  66. info:
  67. parse arg msg
  68.     say env.prg":" msg
  69.     return
  70.  
  71. break_c:
  72. halt:
  73.     call info "interrupted"
  74.     exit
  75.